const errorHandler = {
    error(app,logger){
        app.use(async(ctx,next) => {
            try{
                await next();
            }catch(error){
                logger.error(error);
                ctx.status = error.status || 500;
                ctx.body = "Internal Server Error"
            }
        });
        app.use(async(ctx,next)=>{
            await next();
            if(404 != ctx.status) return;
            ctx.body = '<script type="text/javascript" src="//qzonestyle.gtimg.cn/qzone/hybrid/app/404/search_children.js" charset="utf-8" homePageUrl="http://weblogger.club" homePageName="回到我的主页"></script>'  //404腾讯公益页面
        });
    }
};
export default errorHandler;

//  多个中间件会形成一个栈结构（middle stack），以"先进后出"（first-in-last-out）的顺序执行。
/*
    1、最外层的中间件首先执行。
    2、调用next函数，把执行权交给下一个中间件。
    3、...
    4、最内层的中间件最后执行。
    5、执行结束后，把执行权交回上一层的中间件。
    6、...
    7、最外层的中间件收回执行权之后，执行next函数后面的代码。

 */